上一篇我大概介紹了FileTable 功能和特性,這篇我將示範如何設定並建立FileTable。
由於FileTable是基於FileStream,所以我們必須先設定FileStream。
1.新增 FileGroup And File For FileStream
alter database db1 add filegroup Myfiles contains filestream
alter database db1 add file(name='db1_files',filename='D:\sqlfs\db1_files') to filegroup myfiles
2.確認FileStream是否有啟用
確認FileStream啟用後並執行以下TSQL
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
到這裡我們已經開啟FileStream。
Note:filestream_access_level=2 表示 TSQL和Win32 兩者都可存取。
3.設定資料庫 FileStream 目錄名稱和非交易存取
alter database db1 set filestream(NON_TRANSACTED_ACCESS = full,DIRECTORY_NAME='db1files')
完成FileStream相關設定後,下面我們就可以開始建立FileTable。
建立FileTable
create table filetabletest as filetablewith(filetable_directory='movies',filetable_collate_filename=database_default)
建立成功後,在 SSMS中展開 FileTable節點,便可看到剛剛所建立的FileTable。
確認FileTable 路徑 和 ,FileStream目錄名稱。
select FileTableRootPath('dbo.filetabletest');
FileTable路徑(並非真實路徑)。
select DB_NAME ( database_id ),directory_name
from sys.database_filestream_options;
FileStream 目錄名稱。
瀏覽FileTable目錄。
檔案真正的存放路徑並非目前所顯示的路徑(真實路徑如下圖)。
檔案真實存放路徑 D:\sqlfs\db1_files....。
確認FileTable 和 Windows檔案系統是否同步
使用檔案總管新增檔案
使用 TSQL 查詢 FileTable
select stream_id,name,file_type,creation_time,is_directory,
is_readonly,is_archive,is_system
from dbo.filetabletest
以看到剛剛我們使用檔案總管所新增的檔案,表示兩者是有同步的。
MS SQL Server新特性探險:探險代碼 Denali 全系列文章